/***************************************************************************** 

  ByteWriter
  ----------

  Class making your life easier if you have to write single bits to a buffer

  by yoda

  WWW:      y0da.cjb.net
  E-mail:   LordPE@gmx.net

  You are allowed to use this class in your own projects if you keep this
  trademark.

*****************************************************************************/

#pragma once

#include <windows.h>

//
// ByteWriter class
//
class ByteWriter
{
public:
	ByteWriter(void);
	ByteWriter( void* pBuff, DWORD dwSize );
	~ByteWriter(void);

	void    InitVars();
	BOOL    Assign( void *pBuff, DWORD dwSize );
	DWORD   GetUnusedBitCount();
	DWORD   GetTotalBitCount();
	DWORD   GetWrittenByteCount();
	void    FinishWriting();
	BOOL    WriteBit( BYTE bit );
	BOOL    WriteByte( BYTE byte );
	BOOL    WriteWord( WORD word );
	BOOL    WriteDword( DWORD dword );
	BOOL    WriteBits( DWORD bits, DWORD dwBitCount );

protected:
	void*          pBuffer;
	DWORD          cbBuffer, dwBitsLeft, dwBitsTotal, dwIndex;
	BYTE           byCur;
	BYTE           byBits2Do;
};

typedef ByteWriter *PByteWriter;